package com.googlecode.gflot.examples.client.examples.multipleaxes;

import ca.nanometrics.gflot.client.Axis;
import ca.nanometrics.gflot.client.DataPoint;
import ca.nanometrics.gflot.client.PlotModel;
import ca.nanometrics.gflot.client.Series;
import ca.nanometrics.gflot.client.SeriesHandler;
import ca.nanometrics.gflot.client.SimplePlot;
import ca.nanometrics.gflot.client.event.PlotHoverListener;
import ca.nanometrics.gflot.client.event.PlotItem;
import ca.nanometrics.gflot.client.event.PlotPosition;
import ca.nanometrics.gflot.client.jsni.Plot;
import ca.nanometrics.gflot.client.options.AbstractAxisOptions.AxisPosition;
import ca.nanometrics.gflot.client.options.AxisOptions;
import ca.nanometrics.gflot.client.options.GridOptions;
import ca.nanometrics.gflot.client.options.LegendOptions;
import ca.nanometrics.gflot.client.options.LegendOptions.LegendPosition;
import ca.nanometrics.gflot.client.options.PlotOptions;
import ca.nanometrics.gflot.client.options.TickFormatter;
import ca.nanometrics.gflot.client.options.TimeSeriesAxisOptions;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.googlecode.gflot.examples.client.examples.DefaultActivity;
import com.googlecode.gflot.examples.client.resources.Resources;
import com.googlecode.gflot.examples.client.source.SourceAnnotations.GFlotExamplesData;
import com.googlecode.gflot.examples.client.source.SourceAnnotations.GFlotExamplesRaw;
import com.googlecode.gflot.examples.client.source.SourceAnnotations.GFlotExamplesSource;

/**
 * @author Nicolas Morel
 */
@GFlotExamplesRaw( MultipleAxesPlace.UI_RAW_SOURCE_FILENAME )
public class MultipleAxesExample
    extends DefaultActivity
{

    private static Binder binder = GWT.create( Binder.class );

    interface Binder
        extends UiBinder<Widget, MultipleAxesExample>
    {
    }

    /**
     * Plot
     */
    @GFlotExamplesData
    @UiField( provided = true )
    SimplePlot plot;

    /**
     * Position label
     */
    @GFlotExamplesData
    @UiField
    Label cursorPosition;

    public MultipleAxesExample( Resources resources )
    {
        super( resources );
    }

    /**
     * Create plot
     */
    @GFlotExamplesSource
    public Widget createPlot()
    {
        PlotModel model = new PlotModel();
        PlotOptions plotOptions = PlotOptions.create();

        plotOptions.setGridOptions( GridOptions.create().setHoverable( true ) );
        plotOptions.setLegendOptions( LegendOptions.create().setPosition( LegendPosition.SOUTH_WEST ) );

        // add tick formatter to the options
        plotOptions.addXAxisOptions( TimeSeriesAxisOptions.create() );
        plotOptions.addYAxisOptions( AxisOptions.create().setMinimum( 0 ) );
        plotOptions.addYAxisOptions( AxisOptions.create().setAlignTicksWithAxis( 1 ).setPosition( AxisPosition.RIGHT )
            .setTickDecimals( 3 ).setTickFormatter( new TickFormatter() {
                @Override
                public String formatTickValue( double tickValue, Axis axis )
                {
                    double round = Math.pow( 10, axis.getTickDecimals() );
                    return ( Math.round( tickValue * round ) / round ) + "\u20ac";
                }
            } ) );

        // create a series
        SeriesHandler oilPrices = model.addSeries( Series.create().setLabel( "Oil price ($)" ) );
        addOilPricesData( oilPrices );

        SeriesHandler exchangeRates =
            model.addSeries( Series.create().setLabel( "USD/EUR exchange rate" ).setYAxis( 2 ) );
        addExchangeRatesDate( exchangeRates );

        // create the plot
        plot = new SimplePlot( model, plotOptions );

        // add hover listener
        plot.addHoverListener( new PlotHoverListener() {
            public void onPlotHover( Plot plot, PlotPosition position, PlotItem item )
            {
                if ( position != null )
                {
                    cursorPosition.setText( "{x=" + position.getX() + ", y1=" + position.getY() + ", y2="
                        + position.getY( 2 ) + "}" );
                }
            }
        }, false );

        return binder.createAndBindUi( this );
    }

    /**
     * When user clicks on left button
     */
    @UiHandler( "left" )
    @GFlotExamplesSource
    void onClickLeft( ClickEvent e )
    {
        plot.getPlotOptions().getYAxisOptions( 2 ).setPosition( AxisPosition.LEFT );
        plot.redraw();
    }

    /**
     * When user clicks on right button
     */
    @UiHandler( "right" )
    @GFlotExamplesSource
    void onClickRight( ClickEvent e )
    {
        plot.getPlotOptions().getYAxisOptions( 2 ).setPosition( AxisPosition.RIGHT );
        plot.redraw();
    }

    private void addExchangeRatesDate( SeriesHandler exchangeRates )
    {
        exchangeRates.add( DataPoint.of( 1167606000000d, 0.7580 ) );
        exchangeRates.add( DataPoint.of( 1167692400000d, 0.7580 ) );
        exchangeRates.add( DataPoint.of( 1167778800000d, 0.75470 ) );
        exchangeRates.add( DataPoint.of( 1167865200000d, 0.75490 ) );
        exchangeRates.add( DataPoint.of( 1167951600000d, 0.76130 ) );
        exchangeRates.add( DataPoint.of( 1168038000000d, 0.76550 ) );
        exchangeRates.add( DataPoint.of( 1168124400000d, 0.76930 ) );
        exchangeRates.add( DataPoint.of( 1168210800000d, 0.76940 ) );
        exchangeRates.add( DataPoint.of( 1168297200000d, 0.76880 ) );
        exchangeRates.add( DataPoint.of( 1168383600000d, 0.76780 ) );
        exchangeRates.add( DataPoint.of( 1168470000000d, 0.77080 ) );
        exchangeRates.add( DataPoint.of( 1168556400000d, 0.77270 ) );
        exchangeRates.add( DataPoint.of( 1168642800000d, 0.77490 ) );
        exchangeRates.add( DataPoint.of( 1168729200000d, 0.77410 ) );
        exchangeRates.add( DataPoint.of( 1168815600000d, 0.77410 ) );
        exchangeRates.add( DataPoint.of( 1168902000000d, 0.77320 ) );
        exchangeRates.add( DataPoint.of( 1168988400000d, 0.77270 ) );
        exchangeRates.add( DataPoint.of( 1169074800000d, 0.77370 ) );
        exchangeRates.add( DataPoint.of( 1169161200000d, 0.77240 ) );
        exchangeRates.add( DataPoint.of( 1169247600000d, 0.77120 ) );
        exchangeRates.add( DataPoint.of( 1169334000000d, 0.7720 ) );
        exchangeRates.add( DataPoint.of( 1169420400000d, 0.77210 ) );
        exchangeRates.add( DataPoint.of( 1169506800000d, 0.77170 ) );
        exchangeRates.add( DataPoint.of( 1169593200000d, 0.77040 ) );
        exchangeRates.add( DataPoint.of( 1169679600000d, 0.7690 ) );
        exchangeRates.add( DataPoint.of( 1169766000000d, 0.77110 ) );
        exchangeRates.add( DataPoint.of( 1169852400000d, 0.7740 ) );
        exchangeRates.add( DataPoint.of( 1169938800000d, 0.77450 ) );
        exchangeRates.add( DataPoint.of( 1170025200000d, 0.77450 ) );
        exchangeRates.add( DataPoint.of( 1170111600000d, 0.7740 ) );
        exchangeRates.add( DataPoint.of( 1170198000000d, 0.77160 ) );
        exchangeRates.add( DataPoint.of( 1170284400000d, 0.77130 ) );
        exchangeRates.add( DataPoint.of( 1170370800000d, 0.76780 ) );
        exchangeRates.add( DataPoint.of( 1170457200000d, 0.76880 ) );
        exchangeRates.add( DataPoint.of( 1170543600000d, 0.77180 ) );
        exchangeRates.add( DataPoint.of( 1170630000000d, 0.77180 ) );
        exchangeRates.add( DataPoint.of( 1170716400000d, 0.77280 ) );
        exchangeRates.add( DataPoint.of( 1170802800000d, 0.77290 ) );
        exchangeRates.add( DataPoint.of( 1170889200000d, 0.76980 ) );
        exchangeRates.add( DataPoint.of( 1170975600000d, 0.76850 ) );
        exchangeRates.add( DataPoint.of( 1171062000000d, 0.76810 ) );
        exchangeRates.add( DataPoint.of( 1171148400000d, 0.7690 ) );
        exchangeRates.add( DataPoint.of( 1171234800000d, 0.7690 ) );
        exchangeRates.add( DataPoint.of( 1171321200000d, 0.76980 ) );
        exchangeRates.add( DataPoint.of( 1171407600000d, 0.76990 ) );
        exchangeRates.add( DataPoint.of( 1171494000000d, 0.76510 ) );
        exchangeRates.add( DataPoint.of( 1171580400000d, 0.76130 ) );
        exchangeRates.add( DataPoint.of( 1171666800000d, 0.76160 ) );
        exchangeRates.add( DataPoint.of( 1171753200000d, 0.76140 ) );
        exchangeRates.add( DataPoint.of( 1171839600000d, 0.76140 ) );
        exchangeRates.add( DataPoint.of( 1171926000000d, 0.76070 ) );
        exchangeRates.add( DataPoint.of( 1172012400000d, 0.76020 ) );
        exchangeRates.add( DataPoint.of( 1172098800000d, 0.76110 ) );
        exchangeRates.add( DataPoint.of( 1172185200000d, 0.76220 ) );
        exchangeRates.add( DataPoint.of( 1172271600000d, 0.76150 ) );
        exchangeRates.add( DataPoint.of( 1172358000000d, 0.75980 ) );
        exchangeRates.add( DataPoint.of( 1172444400000d, 0.75980 ) );
        exchangeRates.add( DataPoint.of( 1172530800000d, 0.75920 ) );
        exchangeRates.add( DataPoint.of( 1172617200000d, 0.75730 ) );
        exchangeRates.add( DataPoint.of( 1172703600000d, 0.75660 ) );
        exchangeRates.add( DataPoint.of( 1172790000000d, 0.75670 ) );
        exchangeRates.add( DataPoint.of( 1172876400000d, 0.75910 ) );
        exchangeRates.add( DataPoint.of( 1172962800000d, 0.75820 ) );
        exchangeRates.add( DataPoint.of( 1173049200000d, 0.75850 ) );
        exchangeRates.add( DataPoint.of( 1173135600000d, 0.76130 ) );
        exchangeRates.add( DataPoint.of( 1173222000000d, 0.76310 ) );
        exchangeRates.add( DataPoint.of( 1173308400000d, 0.76150 ) );
        exchangeRates.add( DataPoint.of( 1173394800000d, 0.760 ) );
        exchangeRates.add( DataPoint.of( 1173481200000d, 0.76130 ) );
        exchangeRates.add( DataPoint.of( 1173567600000d, 0.76270 ) );
        exchangeRates.add( DataPoint.of( 1173654000000d, 0.76270 ) );
        exchangeRates.add( DataPoint.of( 1173740400000d, 0.76080 ) );
        exchangeRates.add( DataPoint.of( 1173826800000d, 0.75830 ) );
        exchangeRates.add( DataPoint.of( 1173913200000d, 0.75750 ) );
        exchangeRates.add( DataPoint.of( 1173999600000d, 0.75620 ) );
        exchangeRates.add( DataPoint.of( 1174086000000d, 0.7520 ) );
        exchangeRates.add( DataPoint.of( 1174172400000d, 0.75120 ) );
        exchangeRates.add( DataPoint.of( 1174258800000d, 0.75120 ) );
        exchangeRates.add( DataPoint.of( 1174345200000d, 0.75170 ) );
        exchangeRates.add( DataPoint.of( 1174431600000d, 0.7520 ) );
        exchangeRates.add( DataPoint.of( 1174518000000d, 0.75110 ) );
        exchangeRates.add( DataPoint.of( 1174604400000d, 0.7480 ) );
        exchangeRates.add( DataPoint.of( 1174690800000d, 0.75090 ) );
        exchangeRates.add( DataPoint.of( 1174777200000d, 0.75310 ) );
        exchangeRates.add( DataPoint.of( 1174860000000d, 0.75310 ) );
        exchangeRates.add( DataPoint.of( 1174946400000d, 0.75270 ) );
        exchangeRates.add( DataPoint.of( 1175032800000d, 0.74980 ) );
        exchangeRates.add( DataPoint.of( 1175119200000d, 0.74930 ) );
        exchangeRates.add( DataPoint.of( 1175205600000d, 0.75040 ) );
        exchangeRates.add( DataPoint.of( 1175292000000d, 0.750 ) );
        exchangeRates.add( DataPoint.of( 1175378400000d, 0.74910 ) );
        exchangeRates.add( DataPoint.of( 1175464800000d, 0.74910 ) );
        exchangeRates.add( DataPoint.of( 1175551200000d, 0.74850 ) );
        exchangeRates.add( DataPoint.of( 1175637600000d, 0.74840 ) );
        exchangeRates.add( DataPoint.of( 1175724000000d, 0.74920 ) );
        exchangeRates.add( DataPoint.of( 1175810400000d, 0.74710 ) );
        exchangeRates.add( DataPoint.of( 1175896800000d, 0.74590 ) );
        exchangeRates.add( DataPoint.of( 1175983200000d, 0.74770 ) );
        exchangeRates.add( DataPoint.of( 1176069600000d, 0.74770 ) );
        exchangeRates.add( DataPoint.of( 1176156000000d, 0.74830 ) );
        exchangeRates.add( DataPoint.of( 1176242400000d, 0.74580 ) );
        exchangeRates.add( DataPoint.of( 1176328800000d, 0.74480 ) );
        exchangeRates.add( DataPoint.of( 1176415200000d, 0.7430 ) );
        exchangeRates.add( DataPoint.of( 1176501600000d, 0.73990 ) );
        exchangeRates.add( DataPoint.of( 1176588000000d, 0.73950 ) );
        exchangeRates.add( DataPoint.of( 1176674400000d, 0.73950 ) );
        exchangeRates.add( DataPoint.of( 1176760800000d, 0.73780 ) );
        exchangeRates.add( DataPoint.of( 1176847200000d, 0.73820 ) );
        exchangeRates.add( DataPoint.of( 1176933600000d, 0.73620 ) );
        exchangeRates.add( DataPoint.of( 1177020000000d, 0.73550 ) );
        exchangeRates.add( DataPoint.of( 1177106400000d, 0.73480 ) );
        exchangeRates.add( DataPoint.of( 1177192800000d, 0.73610 ) );
        exchangeRates.add( DataPoint.of( 1177279200000d, 0.73610 ) );
        exchangeRates.add( DataPoint.of( 1177365600000d, 0.73650 ) );
        exchangeRates.add( DataPoint.of( 1177452000000d, 0.73620 ) );
        exchangeRates.add( DataPoint.of( 1177538400000d, 0.73310 ) );
        exchangeRates.add( DataPoint.of( 1177624800000d, 0.73390 ) );
        exchangeRates.add( DataPoint.of( 1177711200000d, 0.73440 ) );
        exchangeRates.add( DataPoint.of( 1177797600000d, 0.73270 ) );
        exchangeRates.add( DataPoint.of( 1177884000000d, 0.73270 ) );
        exchangeRates.add( DataPoint.of( 1177970400000d, 0.73360 ) );
        exchangeRates.add( DataPoint.of( 1178056800000d, 0.73330 ) );
        exchangeRates.add( DataPoint.of( 1178143200000d, 0.73590 ) );
        exchangeRates.add( DataPoint.of( 1178229600000d, 0.73590 ) );
        exchangeRates.add( DataPoint.of( 1178316000000d, 0.73720 ) );
        exchangeRates.add( DataPoint.of( 1178402400000d, 0.7360 ) );
        exchangeRates.add( DataPoint.of( 1178488800000d, 0.7360 ) );
        exchangeRates.add( DataPoint.of( 1178575200000d, 0.7350 ) );
        exchangeRates.add( DataPoint.of( 1178661600000d, 0.73650 ) );
        exchangeRates.add( DataPoint.of( 1178748000000d, 0.73840 ) );
        exchangeRates.add( DataPoint.of( 1178834400000d, 0.73950 ) );
        exchangeRates.add( DataPoint.of( 1178920800000d, 0.74130 ) );
        exchangeRates.add( DataPoint.of( 1179007200000d, 0.73970 ) );
        exchangeRates.add( DataPoint.of( 1179093600000d, 0.73960 ) );
        exchangeRates.add( DataPoint.of( 1179180000000d, 0.73850 ) );
        exchangeRates.add( DataPoint.of( 1179266400000d, 0.73780 ) );
        exchangeRates.add( DataPoint.of( 1179352800000d, 0.73660 ) );
        exchangeRates.add( DataPoint.of( 1179439200000d, 0.740 ) );
        exchangeRates.add( DataPoint.of( 1179525600000d, 0.74110 ) );
        exchangeRates.add( DataPoint.of( 1179612000000d, 0.74060 ) );
        exchangeRates.add( DataPoint.of( 1179698400000d, 0.74050 ) );
        exchangeRates.add( DataPoint.of( 1179784800000d, 0.74140 ) );
        exchangeRates.add( DataPoint.of( 1179871200000d, 0.74310 ) );
        exchangeRates.add( DataPoint.of( 1179957600000d, 0.74310 ) );
        exchangeRates.add( DataPoint.of( 1180044000000d, 0.74380 ) );
        exchangeRates.add( DataPoint.of( 1180130400000d, 0.74430 ) );
        exchangeRates.add( DataPoint.of( 1180216800000d, 0.74430 ) );
        exchangeRates.add( DataPoint.of( 1180303200000d, 0.74430 ) );
        exchangeRates.add( DataPoint.of( 1180389600000d, 0.74340 ) );
        exchangeRates.add( DataPoint.of( 1180476000000d, 0.74290 ) );
        exchangeRates.add( DataPoint.of( 1180562400000d, 0.74420 ) );
        exchangeRates.add( DataPoint.of( 1180648800000d, 0.7440 ) );
        exchangeRates.add( DataPoint.of( 1180735200000d, 0.74390 ) );
        exchangeRates.add( DataPoint.of( 1180821600000d, 0.74370 ) );
        exchangeRates.add( DataPoint.of( 1180908000000d, 0.74370 ) );
        exchangeRates.add( DataPoint.of( 1180994400000d, 0.74290 ) );
        exchangeRates.add( DataPoint.of( 1181080800000d, 0.74030 ) );
        exchangeRates.add( DataPoint.of( 1181167200000d, 0.73990 ) );
        exchangeRates.add( DataPoint.of( 1181253600000d, 0.74180 ) );
        exchangeRates.add( DataPoint.of( 1181340000000d, 0.74680 ) );
        exchangeRates.add( DataPoint.of( 1181426400000d, 0.7480 ) );
        exchangeRates.add( DataPoint.of( 1181512800000d, 0.7480 ) );
        exchangeRates.add( DataPoint.of( 1181599200000d, 0.7490 ) );
        exchangeRates.add( DataPoint.of( 1181685600000d, 0.74940 ) );
        exchangeRates.add( DataPoint.of( 1181772000000d, 0.75220 ) );
        exchangeRates.add( DataPoint.of( 1181858400000d, 0.75150 ) );
        exchangeRates.add( DataPoint.of( 1181944800000d, 0.75020 ) );
        exchangeRates.add( DataPoint.of( 1182031200000d, 0.74720 ) );
        exchangeRates.add( DataPoint.of( 1182117600000d, 0.74720 ) );
        exchangeRates.add( DataPoint.of( 1182204000000d, 0.74620 ) );
        exchangeRates.add( DataPoint.of( 1182290400000d, 0.74550 ) );
        exchangeRates.add( DataPoint.of( 1182376800000d, 0.74490 ) );
        exchangeRates.add( DataPoint.of( 1182463200000d, 0.74670 ) );
        exchangeRates.add( DataPoint.of( 1182549600000d, 0.74580 ) );
        exchangeRates.add( DataPoint.of( 1182636000000d, 0.74270 ) );
        exchangeRates.add( DataPoint.of( 1182722400000d, 0.74270 ) );
        exchangeRates.add( DataPoint.of( 1182808800000d, 0.7430 ) );
        exchangeRates.add( DataPoint.of( 1182895200000d, 0.74290 ) );
        exchangeRates.add( DataPoint.of( 1182981600000d, 0.7440 ) );
        exchangeRates.add( DataPoint.of( 1183068000000d, 0.7430 ) );
        exchangeRates.add( DataPoint.of( 1183154400000d, 0.74220 ) );
        exchangeRates.add( DataPoint.of( 1183240800000d, 0.73880 ) );
        exchangeRates.add( DataPoint.of( 1183327200000d, 0.73880 ) );
        exchangeRates.add( DataPoint.of( 1183413600000d, 0.73690 ) );
        exchangeRates.add( DataPoint.of( 1183500000000d, 0.73450 ) );
        exchangeRates.add( DataPoint.of( 1183586400000d, 0.73450 ) );
        exchangeRates.add( DataPoint.of( 1183672800000d, 0.73450 ) );
        exchangeRates.add( DataPoint.of( 1183759200000d, 0.73520 ) );
        exchangeRates.add( DataPoint.of( 1183845600000d, 0.73410 ) );
        exchangeRates.add( DataPoint.of( 1183932000000d, 0.73410 ) );
        exchangeRates.add( DataPoint.of( 1184018400000d, 0.7340 ) );
        exchangeRates.add( DataPoint.of( 1184104800000d, 0.73240 ) );
        exchangeRates.add( DataPoint.of( 1184191200000d, 0.72720 ) );
        exchangeRates.add( DataPoint.of( 1184277600000d, 0.72640 ) );
        exchangeRates.add( DataPoint.of( 1184364000000d, 0.72550 ) );
        exchangeRates.add( DataPoint.of( 1184450400000d, 0.72580 ) );
        exchangeRates.add( DataPoint.of( 1184536800000d, 0.72580 ) );
        exchangeRates.add( DataPoint.of( 1184623200000d, 0.72560 ) );
        exchangeRates.add( DataPoint.of( 1184709600000d, 0.72570 ) );
        exchangeRates.add( DataPoint.of( 1184796000000d, 0.72470 ) );
        exchangeRates.add( DataPoint.of( 1184882400000d, 0.72430 ) );
        exchangeRates.add( DataPoint.of( 1184968800000d, 0.72440 ) );
        exchangeRates.add( DataPoint.of( 1185055200000d, 0.72350 ) );
        exchangeRates.add( DataPoint.of( 1185141600000d, 0.72350 ) );
        exchangeRates.add( DataPoint.of( 1185228000000d, 0.72350 ) );
        exchangeRates.add( DataPoint.of( 1185314400000d, 0.72350 ) );
        exchangeRates.add( DataPoint.of( 1185400800000d, 0.72620 ) );
        exchangeRates.add( DataPoint.of( 1185487200000d, 0.72880 ) );
        exchangeRates.add( DataPoint.of( 1185573600000d, 0.73010 ) );
        exchangeRates.add( DataPoint.of( 1185660000000d, 0.73370 ) );
        exchangeRates.add( DataPoint.of( 1185746400000d, 0.73370 ) );
        exchangeRates.add( DataPoint.of( 1185832800000d, 0.73240 ) );
        exchangeRates.add( DataPoint.of( 1185919200000d, 0.72970 ) );
        exchangeRates.add( DataPoint.of( 1186005600000d, 0.73170 ) );
        exchangeRates.add( DataPoint.of( 1186092000000d, 0.73150 ) );
        exchangeRates.add( DataPoint.of( 1186178400000d, 0.72880 ) );
        exchangeRates.add( DataPoint.of( 1186264800000d, 0.72630 ) );
        exchangeRates.add( DataPoint.of( 1186351200000d, 0.72630 ) );
        exchangeRates.add( DataPoint.of( 1186437600000d, 0.72420 ) );
        exchangeRates.add( DataPoint.of( 1186524000000d, 0.72530 ) );
        exchangeRates.add( DataPoint.of( 1186610400000d, 0.72640 ) );
        exchangeRates.add( DataPoint.of( 1186696800000d, 0.7270 ) );
        exchangeRates.add( DataPoint.of( 1186783200000d, 0.73120 ) );
        exchangeRates.add( DataPoint.of( 1186869600000d, 0.73050 ) );
        exchangeRates.add( DataPoint.of( 1186956000000d, 0.73050 ) );
        exchangeRates.add( DataPoint.of( 1187042400000d, 0.73180 ) );
        exchangeRates.add( DataPoint.of( 1187128800000d, 0.73580 ) );
        exchangeRates.add( DataPoint.of( 1187215200000d, 0.74090 ) );
        exchangeRates.add( DataPoint.of( 1187301600000d, 0.74540 ) );
        exchangeRates.add( DataPoint.of( 1187388000000d, 0.74370 ) );
        exchangeRates.add( DataPoint.of( 1187474400000d, 0.74240 ) );
        exchangeRates.add( DataPoint.of( 1187560800000d, 0.74240 ) );
        exchangeRates.add( DataPoint.of( 1187647200000d, 0.74150 ) );
        exchangeRates.add( DataPoint.of( 1187733600000d, 0.74190 ) );
        exchangeRates.add( DataPoint.of( 1187820000000d, 0.74140 ) );
        exchangeRates.add( DataPoint.of( 1187906400000d, 0.73770 ) );
        exchangeRates.add( DataPoint.of( 1187992800000d, 0.73550 ) );
        exchangeRates.add( DataPoint.of( 1188079200000d, 0.73150 ) );
        exchangeRates.add( DataPoint.of( 1188165600000d, 0.73150 ) );
        exchangeRates.add( DataPoint.of( 1188252000000d, 0.7320 ) );
        exchangeRates.add( DataPoint.of( 1188338400000d, 0.73320 ) );
        exchangeRates.add( DataPoint.of( 1188424800000d, 0.73460 ) );
        exchangeRates.add( DataPoint.of( 1188511200000d, 0.73280 ) );
        exchangeRates.add( DataPoint.of( 1188597600000d, 0.73230 ) );
        exchangeRates.add( DataPoint.of( 1188684000000d, 0.7340 ) );
        exchangeRates.add( DataPoint.of( 1188770400000d, 0.7340 ) );
        exchangeRates.add( DataPoint.of( 1188856800000d, 0.73360 ) );
        exchangeRates.add( DataPoint.of( 1188943200000d, 0.73510 ) );
        exchangeRates.add( DataPoint.of( 1189029600000d, 0.73460 ) );
        exchangeRates.add( DataPoint.of( 1189116000000d, 0.73210 ) );
        exchangeRates.add( DataPoint.of( 1189202400000d, 0.72940 ) );
        exchangeRates.add( DataPoint.of( 1189288800000d, 0.72660 ) );
        exchangeRates.add( DataPoint.of( 1189375200000d, 0.72660 ) );
        exchangeRates.add( DataPoint.of( 1189461600000d, 0.72540 ) );
        exchangeRates.add( DataPoint.of( 1189548000000d, 0.72420 ) );
        exchangeRates.add( DataPoint.of( 1189634400000d, 0.72130 ) );
        exchangeRates.add( DataPoint.of( 1189720800000d, 0.71970 ) );
        exchangeRates.add( DataPoint.of( 1189807200000d, 0.72090 ) );
        exchangeRates.add( DataPoint.of( 1189893600000d, 0.7210 ) );
        exchangeRates.add( DataPoint.of( 1189980000000d, 0.7210 ) );
        exchangeRates.add( DataPoint.of( 1190066400000d, 0.7210 ) );
        exchangeRates.add( DataPoint.of( 1190152800000d, 0.72090 ) );
        exchangeRates.add( DataPoint.of( 1190239200000d, 0.71590 ) );
        exchangeRates.add( DataPoint.of( 1190325600000d, 0.71330 ) );
        exchangeRates.add( DataPoint.of( 1190412000000d, 0.71050 ) );
        exchangeRates.add( DataPoint.of( 1190498400000d, 0.70990 ) );
        exchangeRates.add( DataPoint.of( 1190584800000d, 0.70990 ) );
        exchangeRates.add( DataPoint.of( 1190671200000d, 0.70930 ) );
        exchangeRates.add( DataPoint.of( 1190757600000d, 0.70930 ) );
        exchangeRates.add( DataPoint.of( 1190844000000d, 0.70760 ) );
        exchangeRates.add( DataPoint.of( 1190930400000d, 0.7070 ) );
        exchangeRates.add( DataPoint.of( 1191016800000d, 0.70490 ) );
        exchangeRates.add( DataPoint.of( 1191103200000d, 0.70120 ) );
        exchangeRates.add( DataPoint.of( 1191189600000d, 0.70110 ) );
        exchangeRates.add( DataPoint.of( 1191276000000d, 0.70190 ) );
        exchangeRates.add( DataPoint.of( 1191362400000d, 0.70460 ) );
        exchangeRates.add( DataPoint.of( 1191448800000d, 0.70630 ) );
        exchangeRates.add( DataPoint.of( 1191535200000d, 0.70890 ) );
        exchangeRates.add( DataPoint.of( 1191621600000d, 0.70770 ) );
        exchangeRates.add( DataPoint.of( 1191708000000d, 0.70770 ) );
        exchangeRates.add( DataPoint.of( 1191794400000d, 0.70770 ) );
        exchangeRates.add( DataPoint.of( 1191880800000d, 0.70910 ) );
        exchangeRates.add( DataPoint.of( 1191967200000d, 0.71180 ) );
        exchangeRates.add( DataPoint.of( 1192053600000d, 0.70790 ) );
        exchangeRates.add( DataPoint.of( 1192140000000d, 0.70530 ) );
        exchangeRates.add( DataPoint.of( 1192226400000d, 0.7050 ) );
        exchangeRates.add( DataPoint.of( 1192312800000d, 0.70550 ) );
        exchangeRates.add( DataPoint.of( 1192399200000d, 0.70550 ) );
        exchangeRates.add( DataPoint.of( 1192485600000d, 0.70450 ) );
        exchangeRates.add( DataPoint.of( 1192572000000d, 0.70510 ) );
        exchangeRates.add( DataPoint.of( 1192658400000d, 0.70510 ) );
        exchangeRates.add( DataPoint.of( 1192744800000d, 0.70170 ) );
        exchangeRates.add( DataPoint.of( 1192831200000d, 0.70 ) );
        exchangeRates.add( DataPoint.of( 1192917600000d, 0.69950 ) );
        exchangeRates.add( DataPoint.of( 1193004000000d, 0.69940 ) );
        exchangeRates.add( DataPoint.of( 1193090400000d, 0.70140 ) );
        exchangeRates.add( DataPoint.of( 1193176800000d, 0.70360 ) );
        exchangeRates.add( DataPoint.of( 1193263200000d, 0.70210 ) );
        exchangeRates.add( DataPoint.of( 1193349600000d, 0.70020 ) );
        exchangeRates.add( DataPoint.of( 1193436000000d, 0.69670 ) );
        exchangeRates.add( DataPoint.of( 1193522400000d, 0.6950 ) );
        exchangeRates.add( DataPoint.of( 1193612400000d, 0.6950 ) );
        exchangeRates.add( DataPoint.of( 1193698800000d, 0.69390 ) );
        exchangeRates.add( DataPoint.of( 1193785200000d, 0.6940 ) );
        exchangeRates.add( DataPoint.of( 1193871600000d, 0.69220 ) );
        exchangeRates.add( DataPoint.of( 1193958000000d, 0.69190 ) );
        exchangeRates.add( DataPoint.of( 1194044400000d, 0.69140 ) );
        exchangeRates.add( DataPoint.of( 1194130800000d, 0.68940 ) );
        exchangeRates.add( DataPoint.of( 1194217200000d, 0.68910 ) );
        exchangeRates.add( DataPoint.of( 1194303600000d, 0.69040 ) );
        exchangeRates.add( DataPoint.of( 1194390000000d, 0.6890 ) );
        exchangeRates.add( DataPoint.of( 1194476400000d, 0.68340 ) );
        exchangeRates.add( DataPoint.of( 1194562800000d, 0.68230 ) );
        exchangeRates.add( DataPoint.of( 1194649200000d, 0.68070 ) );
        exchangeRates.add( DataPoint.of( 1194735600000d, 0.68150 ) );
        exchangeRates.add( DataPoint.of( 1194822000000d, 0.68150 ) );
        exchangeRates.add( DataPoint.of( 1194908400000d, 0.68470 ) );
        exchangeRates.add( DataPoint.of( 1194994800000d, 0.68590 ) );
        exchangeRates.add( DataPoint.of( 1195081200000d, 0.68220 ) );
        exchangeRates.add( DataPoint.of( 1195167600000d, 0.68270 ) );
        exchangeRates.add( DataPoint.of( 1195254000000d, 0.68370 ) );
        exchangeRates.add( DataPoint.of( 1195340400000d, 0.68230 ) );
        exchangeRates.add( DataPoint.of( 1195426800000d, 0.68220 ) );
        exchangeRates.add( DataPoint.of( 1195513200000d, 0.68220 ) );
        exchangeRates.add( DataPoint.of( 1195599600000d, 0.67920 ) );
        exchangeRates.add( DataPoint.of( 1195686000000d, 0.67460 ) );
        exchangeRates.add( DataPoint.of( 1195772400000d, 0.67350 ) );
        exchangeRates.add( DataPoint.of( 1195858800000d, 0.67310 ) );
        exchangeRates.add( DataPoint.of( 1195945200000d, 0.67420 ) );
        exchangeRates.add( DataPoint.of( 1196031600000d, 0.67440 ) );
        exchangeRates.add( DataPoint.of( 1196118000000d, 0.67390 ) );
        exchangeRates.add( DataPoint.of( 1196204400000d, 0.67310 ) );
        exchangeRates.add( DataPoint.of( 1196290800000d, 0.67610 ) );
        exchangeRates.add( DataPoint.of( 1196377200000d, 0.67610 ) );
        exchangeRates.add( DataPoint.of( 1196463600000d, 0.67850 ) );
        exchangeRates.add( DataPoint.of( 1196550000000d, 0.68180 ) );
        exchangeRates.add( DataPoint.of( 1196636400000d, 0.68360 ) );
        exchangeRates.add( DataPoint.of( 1196722800000d, 0.68230 ) );
        exchangeRates.add( DataPoint.of( 1196809200000d, 0.68050 ) );
        exchangeRates.add( DataPoint.of( 1196895600000d, 0.67930 ) );
        exchangeRates.add( DataPoint.of( 1196982000000d, 0.68490 ) );
        exchangeRates.add( DataPoint.of( 1197068400000d, 0.68330 ) );
        exchangeRates.add( DataPoint.of( 1197154800000d, 0.68250 ) );
        exchangeRates.add( DataPoint.of( 1197241200000d, 0.68250 ) );
        exchangeRates.add( DataPoint.of( 1197327600000d, 0.68160 ) );
        exchangeRates.add( DataPoint.of( 1197414000000d, 0.67990 ) );
        exchangeRates.add( DataPoint.of( 1197500400000d, 0.68130 ) );
        exchangeRates.add( DataPoint.of( 1197586800000d, 0.68090 ) );
        exchangeRates.add( DataPoint.of( 1197673200000d, 0.68680 ) );
        exchangeRates.add( DataPoint.of( 1197759600000d, 0.69330 ) );
        exchangeRates.add( DataPoint.of( 1197846000000d, 0.69330 ) );
        exchangeRates.add( DataPoint.of( 1197932400000d, 0.69450 ) );
        exchangeRates.add( DataPoint.of( 1198018800000d, 0.69440 ) );
        exchangeRates.add( DataPoint.of( 1198105200000d, 0.69460 ) );
        exchangeRates.add( DataPoint.of( 1198191600000d, 0.69640 ) );
        exchangeRates.add( DataPoint.of( 1198278000000d, 0.69650 ) );
        exchangeRates.add( DataPoint.of( 1198364400000d, 0.69560 ) );
        exchangeRates.add( DataPoint.of( 1198450800000d, 0.69560 ) );
        exchangeRates.add( DataPoint.of( 1198537200000d, 0.6950 ) );
        exchangeRates.add( DataPoint.of( 1198623600000d, 0.69480 ) );
        exchangeRates.add( DataPoint.of( 1198710000000d, 0.69280 ) );
        exchangeRates.add( DataPoint.of( 1198796400000d, 0.68870 ) );
        exchangeRates.add( DataPoint.of( 1198882800000d, 0.68240 ) );
        exchangeRates.add( DataPoint.of( 1198969200000d, 0.67940 ) );
        exchangeRates.add( DataPoint.of( 1199055600000d, 0.67940 ) );
        exchangeRates.add( DataPoint.of( 1199142000000d, 0.68030 ) );
        exchangeRates.add( DataPoint.of( 1199228400000d, 0.68550 ) );
        exchangeRates.add( DataPoint.of( 1199314800000d, 0.68240 ) );
        exchangeRates.add( DataPoint.of( 1199401200000d, 0.67910 ) );
        exchangeRates.add( DataPoint.of( 1199487600000d, 0.67830 ) );
        exchangeRates.add( DataPoint.of( 1199574000000d, 0.67850 ) );
        exchangeRates.add( DataPoint.of( 1199660400000d, 0.67850 ) );
        exchangeRates.add( DataPoint.of( 1199746800000d, 0.67970 ) );
        exchangeRates.add( DataPoint.of( 1199833200000d, 0.680 ) );
        exchangeRates.add( DataPoint.of( 1199919600000d, 0.68030 ) );
        exchangeRates.add( DataPoint.of( 1200006000000d, 0.68050 ) );
        exchangeRates.add( DataPoint.of( 1200092400000d, 0.6760 ) );
        exchangeRates.add( DataPoint.of( 1200178800000d, 0.6770 ) );
        exchangeRates.add( DataPoint.of( 1200265200000d, 0.6770 ) );
        exchangeRates.add( DataPoint.of( 1200351600000d, 0.67360 ) );
        exchangeRates.add( DataPoint.of( 1200438000000d, 0.67260 ) );
        exchangeRates.add( DataPoint.of( 1200524400000d, 0.67640 ) );
        exchangeRates.add( DataPoint.of( 1200610800000d, 0.68210 ) );
        exchangeRates.add( DataPoint.of( 1200697200000d, 0.68310 ) );
        exchangeRates.add( DataPoint.of( 1200783600000d, 0.68420 ) );
        exchangeRates.add( DataPoint.of( 1200870000000d, 0.68420 ) );
        exchangeRates.add( DataPoint.of( 1200956400000d, 0.68870 ) );
        exchangeRates.add( DataPoint.of( 1201042800000d, 0.69030 ) );
        exchangeRates.add( DataPoint.of( 1201129200000d, 0.68480 ) );
        exchangeRates.add( DataPoint.of( 1201215600000d, 0.68240 ) );
        exchangeRates.add( DataPoint.of( 1201302000000d, 0.67880 ) );
        exchangeRates.add( DataPoint.of( 1201388400000d, 0.68140 ) );
        exchangeRates.add( DataPoint.of( 1201474800000d, 0.68140 ) );
        exchangeRates.add( DataPoint.of( 1201561200000d, 0.67970 ) );
        exchangeRates.add( DataPoint.of( 1201647600000d, 0.67690 ) );
        exchangeRates.add( DataPoint.of( 1201734000000d, 0.67650 ) );
        exchangeRates.add( DataPoint.of( 1201820400000d, 0.67330 ) );
        exchangeRates.add( DataPoint.of( 1201906800000d, 0.67290 ) );
        exchangeRates.add( DataPoint.of( 1201993200000d, 0.67580 ) );
        exchangeRates.add( DataPoint.of( 1202079600000d, 0.67580 ) );
        exchangeRates.add( DataPoint.of( 1202166000000d, 0.6750 ) );
        exchangeRates.add( DataPoint.of( 1202252400000d, 0.6780 ) );
        exchangeRates.add( DataPoint.of( 1202338800000d, 0.68330 ) );
        exchangeRates.add( DataPoint.of( 1202425200000d, 0.68560 ) );
        exchangeRates.add( DataPoint.of( 1202511600000d, 0.69030 ) );
        exchangeRates.add( DataPoint.of( 1202598000000d, 0.68960 ) );
        exchangeRates.add( DataPoint.of( 1202684400000d, 0.68960 ) );
        exchangeRates.add( DataPoint.of( 1202770800000d, 0.68820 ) );
        exchangeRates.add( DataPoint.of( 1202857200000d, 0.68790 ) );
        exchangeRates.add( DataPoint.of( 1202943600000d, 0.68620 ) );
        exchangeRates.add( DataPoint.of( 1203030000000d, 0.68520 ) );
        exchangeRates.add( DataPoint.of( 1203116400000d, 0.68230 ) );
        exchangeRates.add( DataPoint.of( 1203202800000d, 0.68130 ) );
        exchangeRates.add( DataPoint.of( 1203289200000d, 0.68130 ) );
        exchangeRates.add( DataPoint.of( 1203375600000d, 0.68220 ) );
        exchangeRates.add( DataPoint.of( 1203462000000d, 0.68020 ) );
        exchangeRates.add( DataPoint.of( 1203548400000d, 0.68020 ) );
        exchangeRates.add( DataPoint.of( 1203634800000d, 0.67840 ) );
        exchangeRates.add( DataPoint.of( 1203721200000d, 0.67480 ) );
        exchangeRates.add( DataPoint.of( 1203807600000d, 0.67470 ) );
        exchangeRates.add( DataPoint.of( 1203894000000d, 0.67470 ) );
        exchangeRates.add( DataPoint.of( 1203980400000d, 0.67480 ) );
        exchangeRates.add( DataPoint.of( 1204066800000d, 0.67330 ) );
        exchangeRates.add( DataPoint.of( 1204153200000d, 0.6650 ) );
        exchangeRates.add( DataPoint.of( 1204239600000d, 0.66110 ) );
        exchangeRates.add( DataPoint.of( 1204326000000d, 0.65830 ) );
        exchangeRates.add( DataPoint.of( 1204412400000d, 0.6590 ) );
        exchangeRates.add( DataPoint.of( 1204498800000d, 0.6590 ) );
        exchangeRates.add( DataPoint.of( 1204585200000d, 0.65810 ) );
        exchangeRates.add( DataPoint.of( 1204671600000d, 0.65780 ) );
        exchangeRates.add( DataPoint.of( 1204758000000d, 0.65740 ) );
        exchangeRates.add( DataPoint.of( 1204844400000d, 0.65320 ) );
        exchangeRates.add( DataPoint.of( 1204930800000d, 0.65020 ) );
        exchangeRates.add( DataPoint.of( 1205017200000d, 0.65140 ) );
        exchangeRates.add( DataPoint.of( 1205103600000d, 0.65140 ) );
        exchangeRates.add( DataPoint.of( 1205190000000d, 0.65070 ) );
        exchangeRates.add( DataPoint.of( 1205276400000d, 0.6510 ) );
        exchangeRates.add( DataPoint.of( 1205362800000d, 0.64890 ) );
        exchangeRates.add( DataPoint.of( 1205449200000d, 0.64240 ) );
        exchangeRates.add( DataPoint.of( 1205535600000d, 0.64060 ) );
        exchangeRates.add( DataPoint.of( 1205622000000d, 0.63820 ) );
        exchangeRates.add( DataPoint.of( 1205708400000d, 0.63820 ) );
        exchangeRates.add( DataPoint.of( 1205794800000d, 0.63410 ) );
        exchangeRates.add( DataPoint.of( 1205881200000d, 0.63440 ) );
        exchangeRates.add( DataPoint.of( 1205967600000d, 0.63780 ) );
        exchangeRates.add( DataPoint.of( 1206054000000d, 0.64390 ) );
        exchangeRates.add( DataPoint.of( 1206140400000d, 0.64780 ) );
        exchangeRates.add( DataPoint.of( 1206226800000d, 0.64810 ) );
        exchangeRates.add( DataPoint.of( 1206313200000d, 0.64810 ) );
        exchangeRates.add( DataPoint.of( 1206399600000d, 0.64940 ) );
        exchangeRates.add( DataPoint.of( 1206486000000d, 0.64380 ) );
        exchangeRates.add( DataPoint.of( 1206572400000d, 0.63770 ) );
        exchangeRates.add( DataPoint.of( 1206658800000d, 0.63290 ) );
        exchangeRates.add( DataPoint.of( 1206745200000d, 0.63360 ) );
        exchangeRates.add( DataPoint.of( 1206831600000d, 0.63330 ) );
        exchangeRates.add( DataPoint.of( 1206914400000d, 0.63330 ) );
        exchangeRates.add( DataPoint.of( 1207000800000d, 0.6330 ) );
        exchangeRates.add( DataPoint.of( 1207087200000d, 0.63710 ) );
        exchangeRates.add( DataPoint.of( 1207173600000d, 0.64030 ) );
        exchangeRates.add( DataPoint.of( 1207260000000d, 0.63960 ) );
        exchangeRates.add( DataPoint.of( 1207346400000d, 0.63640 ) );
        exchangeRates.add( DataPoint.of( 1207432800000d, 0.63560 ) );
        exchangeRates.add( DataPoint.of( 1207519200000d, 0.63560 ) );
        exchangeRates.add( DataPoint.of( 1207605600000d, 0.63680 ) );
        exchangeRates.add( DataPoint.of( 1207692000000d, 0.63570 ) );
        exchangeRates.add( DataPoint.of( 1207778400000d, 0.63540 ) );
        exchangeRates.add( DataPoint.of( 1207864800000d, 0.6320 ) );
        exchangeRates.add( DataPoint.of( 1207951200000d, 0.63320 ) );
        exchangeRates.add( DataPoint.of( 1208037600000d, 0.63280 ) );
        exchangeRates.add( DataPoint.of( 1208124000000d, 0.63310 ) );
        exchangeRates.add( DataPoint.of( 1208210400000d, 0.63420 ) );
        exchangeRates.add( DataPoint.of( 1208296800000d, 0.63210 ) );
        exchangeRates.add( DataPoint.of( 1208383200000d, 0.63020 ) );
        exchangeRates.add( DataPoint.of( 1208469600000d, 0.62780 ) );
        exchangeRates.add( DataPoint.of( 1208556000000d, 0.63080 ) );
        exchangeRates.add( DataPoint.of( 1208642400000d, 0.63240 ) );
        exchangeRates.add( DataPoint.of( 1208728800000d, 0.63240 ) );
        exchangeRates.add( DataPoint.of( 1208815200000d, 0.63070 ) );
        exchangeRates.add( DataPoint.of( 1208901600000d, 0.62770 ) );
        exchangeRates.add( DataPoint.of( 1208988000000d, 0.62690 ) );
        exchangeRates.add( DataPoint.of( 1209074400000d, 0.63350 ) );
        exchangeRates.add( DataPoint.of( 1209160800000d, 0.63920 ) );
        exchangeRates.add( DataPoint.of( 1209247200000d, 0.640 ) );
        exchangeRates.add( DataPoint.of( 1209333600000d, 0.64010 ) );
        exchangeRates.add( DataPoint.of( 1209420000000d, 0.63960 ) );
        exchangeRates.add( DataPoint.of( 1209506400000d, 0.64070 ) );
        exchangeRates.add( DataPoint.of( 1209592800000d, 0.64230 ) );
        exchangeRates.add( DataPoint.of( 1209679200000d, 0.64290 ) );
        exchangeRates.add( DataPoint.of( 1209765600000d, 0.64720 ) );
        exchangeRates.add( DataPoint.of( 1209852000000d, 0.64850 ) );
        exchangeRates.add( DataPoint.of( 1209938400000d, 0.64860 ) );
        exchangeRates.add( DataPoint.of( 1210024800000d, 0.64670 ) );
        exchangeRates.add( DataPoint.of( 1210111200000d, 0.64440 ) );
        exchangeRates.add( DataPoint.of( 1210197600000d, 0.64670 ) );
        exchangeRates.add( DataPoint.of( 1210284000000d, 0.65090 ) );
        exchangeRates.add( DataPoint.of( 1210370400000d, 0.64780 ) );
        exchangeRates.add( DataPoint.of( 1210456800000d, 0.64610 ) );
        exchangeRates.add( DataPoint.of( 1210543200000d, 0.64610 ) );
        exchangeRates.add( DataPoint.of( 1210629600000d, 0.64680 ) );
        exchangeRates.add( DataPoint.of( 1210716000000d, 0.64490 ) );
        exchangeRates.add( DataPoint.of( 1210802400000d, 0.6470 ) );
        exchangeRates.add( DataPoint.of( 1210888800000d, 0.64610 ) );
        exchangeRates.add( DataPoint.of( 1210975200000d, 0.64520 ) );
        exchangeRates.add( DataPoint.of( 1211061600000d, 0.64220 ) );
        exchangeRates.add( DataPoint.of( 1211148000000d, 0.64220 ) );
        exchangeRates.add( DataPoint.of( 1211234400000d, 0.64250 ) );
        exchangeRates.add( DataPoint.of( 1211320800000d, 0.64140 ) );
        exchangeRates.add( DataPoint.of( 1211407200000d, 0.63660 ) );
        exchangeRates.add( DataPoint.of( 1211493600000d, 0.63460 ) );
        exchangeRates.add( DataPoint.of( 1211580000000d, 0.6350 ) );
        exchangeRates.add( DataPoint.of( 1211666400000d, 0.63460 ) );
        exchangeRates.add( DataPoint.of( 1211752800000d, 0.63460 ) );
        exchangeRates.add( DataPoint.of( 1211839200000d, 0.63430 ) );
        exchangeRates.add( DataPoint.of( 1211925600000d, 0.63460 ) );
        exchangeRates.add( DataPoint.of( 1212012000000d, 0.63790 ) );
        exchangeRates.add( DataPoint.of( 1212098400000d, 0.64160 ) );
        exchangeRates.add( DataPoint.of( 1212184800000d, 0.64420 ) );
        exchangeRates.add( DataPoint.of( 1212271200000d, 0.64310 ) );
        exchangeRates.add( DataPoint.of( 1212357600000d, 0.64310 ) );
        exchangeRates.add( DataPoint.of( 1212444000000d, 0.64350 ) );
        exchangeRates.add( DataPoint.of( 1212530400000d, 0.6440 ) );
        exchangeRates.add( DataPoint.of( 1212616800000d, 0.64730 ) );
        exchangeRates.add( DataPoint.of( 1212703200000d, 0.64690 ) );
        exchangeRates.add( DataPoint.of( 1212789600000d, 0.63860 ) );
        exchangeRates.add( DataPoint.of( 1212876000000d, 0.63560 ) );
        exchangeRates.add( DataPoint.of( 1212962400000d, 0.6340 ) );
        exchangeRates.add( DataPoint.of( 1213048800000d, 0.63460 ) );
        exchangeRates.add( DataPoint.of( 1213135200000d, 0.6430 ) );
        exchangeRates.add( DataPoint.of( 1213221600000d, 0.64520 ) );
        exchangeRates.add( DataPoint.of( 1213308000000d, 0.64670 ) );
        exchangeRates.add( DataPoint.of( 1213394400000d, 0.65060 ) );
        exchangeRates.add( DataPoint.of( 1213480800000d, 0.65040 ) );
        exchangeRates.add( DataPoint.of( 1213567200000d, 0.65030 ) );
        exchangeRates.add( DataPoint.of( 1213653600000d, 0.64810 ) );
        exchangeRates.add( DataPoint.of( 1213740000000d, 0.64510 ) );
        exchangeRates.add( DataPoint.of( 1213826400000d, 0.6450 ) );
        exchangeRates.add( DataPoint.of( 1213912800000d, 0.64410 ) );
        exchangeRates.add( DataPoint.of( 1213999200000d, 0.64140 ) );
        exchangeRates.add( DataPoint.of( 1214085600000d, 0.64090 ) );
        exchangeRates.add( DataPoint.of( 1214172000000d, 0.64090 ) );
        exchangeRates.add( DataPoint.of( 1214258400000d, 0.64280 ) );
        exchangeRates.add( DataPoint.of( 1214344800000d, 0.64310 ) );
        exchangeRates.add( DataPoint.of( 1214431200000d, 0.64180 ) );
        exchangeRates.add( DataPoint.of( 1214517600000d, 0.63710 ) );
        exchangeRates.add( DataPoint.of( 1214604000000d, 0.63490 ) );
        exchangeRates.add( DataPoint.of( 1214690400000d, 0.63330 ) );
        exchangeRates.add( DataPoint.of( 1214776800000d, 0.63340 ) );
        exchangeRates.add( DataPoint.of( 1214863200000d, 0.63380 ) );
        exchangeRates.add( DataPoint.of( 1214949600000d, 0.63420 ) );
        exchangeRates.add( DataPoint.of( 1215036000000d, 0.6320 ) );
        exchangeRates.add( DataPoint.of( 1215122400000d, 0.63180 ) );
        exchangeRates.add( DataPoint.of( 1215208800000d, 0.6370 ) );
        exchangeRates.add( DataPoint.of( 1215295200000d, 0.63680 ) );
        exchangeRates.add( DataPoint.of( 1215381600000d, 0.63680 ) );
        exchangeRates.add( DataPoint.of( 1215468000000d, 0.63830 ) );
        exchangeRates.add( DataPoint.of( 1215554400000d, 0.63710 ) );
        exchangeRates.add( DataPoint.of( 1215640800000d, 0.63710 ) );
        exchangeRates.add( DataPoint.of( 1215727200000d, 0.63550 ) );
        exchangeRates.add( DataPoint.of( 1215813600000d, 0.6320 ) );
        exchangeRates.add( DataPoint.of( 1215900000000d, 0.62770 ) );
        exchangeRates.add( DataPoint.of( 1215986400000d, 0.62760 ) );
        exchangeRates.add( DataPoint.of( 1216072800000d, 0.62910 ) );
        exchangeRates.add( DataPoint.of( 1216159200000d, 0.62740 ) );
        exchangeRates.add( DataPoint.of( 1216245600000d, 0.62930 ) );
        exchangeRates.add( DataPoint.of( 1216332000000d, 0.63110 ) );
        exchangeRates.add( DataPoint.of( 1216418400000d, 0.6310 ) );
        exchangeRates.add( DataPoint.of( 1216504800000d, 0.63120 ) );
        exchangeRates.add( DataPoint.of( 1216591200000d, 0.63120 ) );
        exchangeRates.add( DataPoint.of( 1216677600000d, 0.63040 ) );
        exchangeRates.add( DataPoint.of( 1216764000000d, 0.62940 ) );
        exchangeRates.add( DataPoint.of( 1216850400000d, 0.63480 ) );
        exchangeRates.add( DataPoint.of( 1216936800000d, 0.63780 ) );
        exchangeRates.add( DataPoint.of( 1217023200000d, 0.63680 ) );
        exchangeRates.add( DataPoint.of( 1217109600000d, 0.63680 ) );
        exchangeRates.add( DataPoint.of( 1217196000000d, 0.63680 ) );
        exchangeRates.add( DataPoint.of( 1217282400000d, 0.6360 ) );
        exchangeRates.add( DataPoint.of( 1217368800000d, 0.6370 ) );
        exchangeRates.add( DataPoint.of( 1217455200000d, 0.64180 ) );
        exchangeRates.add( DataPoint.of( 1217541600000d, 0.64110 ) );
        exchangeRates.add( DataPoint.of( 1217628000000d, 0.64350 ) );
        exchangeRates.add( DataPoint.of( 1217714400000d, 0.64270 ) );
        exchangeRates.add( DataPoint.of( 1217800800000d, 0.64270 ) );
        exchangeRates.add( DataPoint.of( 1217887200000d, 0.64190 ) );
        exchangeRates.add( DataPoint.of( 1217973600000d, 0.64460 ) );
        exchangeRates.add( DataPoint.of( 1218060000000d, 0.64680 ) );
        exchangeRates.add( DataPoint.of( 1218146400000d, 0.64870 ) );
        exchangeRates.add( DataPoint.of( 1218232800000d, 0.65940 ) );
        exchangeRates.add( DataPoint.of( 1218319200000d, 0.66660 ) );
        exchangeRates.add( DataPoint.of( 1218405600000d, 0.66660 ) );
        exchangeRates.add( DataPoint.of( 1218492000000d, 0.66780 ) );
        exchangeRates.add( DataPoint.of( 1218578400000d, 0.67120 ) );
        exchangeRates.add( DataPoint.of( 1218664800000d, 0.67050 ) );
        exchangeRates.add( DataPoint.of( 1218751200000d, 0.67180 ) );
        exchangeRates.add( DataPoint.of( 1218837600000d, 0.67840 ) );
        exchangeRates.add( DataPoint.of( 1218924000000d, 0.68110 ) );
        exchangeRates.add( DataPoint.of( 1219010400000d, 0.68110 ) );
        exchangeRates.add( DataPoint.of( 1219096800000d, 0.67940 ) );
        exchangeRates.add( DataPoint.of( 1219183200000d, 0.68040 ) );
        exchangeRates.add( DataPoint.of( 1219269600000d, 0.67810 ) );
        exchangeRates.add( DataPoint.of( 1219356000000d, 0.67560 ) );
        exchangeRates.add( DataPoint.of( 1219442400000d, 0.67350 ) );
        exchangeRates.add( DataPoint.of( 1219528800000d, 0.67630 ) );
        exchangeRates.add( DataPoint.of( 1219615200000d, 0.67620 ) );
        exchangeRates.add( DataPoint.of( 1219701600000d, 0.67770 ) );
        exchangeRates.add( DataPoint.of( 1219788000000d, 0.68150 ) );
        exchangeRates.add( DataPoint.of( 1219874400000d, 0.68020 ) );
        exchangeRates.add( DataPoint.of( 1219960800000d, 0.6780 ) );
        exchangeRates.add( DataPoint.of( 1220047200000d, 0.67960 ) );
        exchangeRates.add( DataPoint.of( 1220133600000d, 0.68170 ) );
        exchangeRates.add( DataPoint.of( 1220220000000d, 0.68170 ) );
        exchangeRates.add( DataPoint.of( 1220306400000d, 0.68320 ) );
        exchangeRates.add( DataPoint.of( 1220392800000d, 0.68770 ) );
        exchangeRates.add( DataPoint.of( 1220479200000d, 0.69120 ) );
        exchangeRates.add( DataPoint.of( 1220565600000d, 0.69140 ) );
        exchangeRates.add( DataPoint.of( 1220652000000d, 0.70090 ) );
        exchangeRates.add( DataPoint.of( 1220738400000d, 0.70120 ) );
        exchangeRates.add( DataPoint.of( 1220824800000d, 0.7010 ) );
        exchangeRates.add( DataPoint.of( 1220911200000d, 0.70050 ) );
    }

    private void addOilPricesData( SeriesHandler oilPrices )
    {
        oilPrices.add( DataPoint.of( 1167692400000d, 61.05 ) );
        oilPrices.add( DataPoint.of( 1167778800000d, 58.32 ) );
        oilPrices.add( DataPoint.of( 1167865200000d, 57.35 ) );
        oilPrices.add( DataPoint.of( 1167951600000d, 56.31 ) );
        oilPrices.add( DataPoint.of( 1168210800000d, 55.55 ) );
        oilPrices.add( DataPoint.of( 1168297200000d, 55.64 ) );
        oilPrices.add( DataPoint.of( 1168383600000d, 54.02 ) );
        oilPrices.add( DataPoint.of( 1168470000000d, 51.88 ) );
        oilPrices.add( DataPoint.of( 1168556400000d, 52.99 ) );
        oilPrices.add( DataPoint.of( 1168815600000d, 52.99 ) );
        oilPrices.add( DataPoint.of( 1168902000000d, 51.21 ) );
        oilPrices.add( DataPoint.of( 1168988400000d, 52.24 ) );
        oilPrices.add( DataPoint.of( 1169074800000d, 50.48 ) );
        oilPrices.add( DataPoint.of( 1169161200000d, 51.99 ) );
        oilPrices.add( DataPoint.of( 1169420400000d, 51.13 ) );
        oilPrices.add( DataPoint.of( 1169506800000d, 55.04 ) );
        oilPrices.add( DataPoint.of( 1169593200000d, 55.37 ) );
        oilPrices.add( DataPoint.of( 1169679600000d, 54.23 ) );
        oilPrices.add( DataPoint.of( 1169766000000d, 55.42 ) );
        oilPrices.add( DataPoint.of( 1170025200000d, 54.01 ) );
        oilPrices.add( DataPoint.of( 1170111600000d, 56.97 ) );
        oilPrices.add( DataPoint.of( 1170198000000d, 58.14 ) );
        oilPrices.add( DataPoint.of( 1170284400000d, 58.14 ) );
        oilPrices.add( DataPoint.of( 1170370800000d, 59.02 ) );
        oilPrices.add( DataPoint.of( 1170630000000d, 58.74 ) );
        oilPrices.add( DataPoint.of( 1170716400000d, 58.88 ) );
        oilPrices.add( DataPoint.of( 1170802800000d, 57.71 ) );
        oilPrices.add( DataPoint.of( 1170889200000d, 59.71 ) );
        oilPrices.add( DataPoint.of( 1170975600000d, 59.89 ) );
        oilPrices.add( DataPoint.of( 1171234800000d, 57.81 ) );
        oilPrices.add( DataPoint.of( 1171321200000d, 59.06 ) );
        oilPrices.add( DataPoint.of( 1171407600000d, 58.00 ) );
        oilPrices.add( DataPoint.of( 1171494000000d, 57.99 ) );
        oilPrices.add( DataPoint.of( 1171580400000d, 59.39 ) );
        oilPrices.add( DataPoint.of( 1171839600000d, 59.39 ) );
        oilPrices.add( DataPoint.of( 1171926000000d, 58.07 ) );
        oilPrices.add( DataPoint.of( 1172012400000d, 60.07 ) );
        oilPrices.add( DataPoint.of( 1172098800000d, 61.14 ) );
        oilPrices.add( DataPoint.of( 1172444400000d, 61.39 ) );
        oilPrices.add( DataPoint.of( 1172530800000d, 61.46 ) );
        oilPrices.add( DataPoint.of( 1172617200000d, 61.79 ) );
        oilPrices.add( DataPoint.of( 1172703600000d, 62.00 ) );
        oilPrices.add( DataPoint.of( 1172790000000d, 60.07 ) );
        oilPrices.add( DataPoint.of( 1173135600000d, 60.69 ) );
        oilPrices.add( DataPoint.of( 1173222000000d, 61.82 ) );
        oilPrices.add( DataPoint.of( 1173308400000d, 60.05 ) );
        oilPrices.add( DataPoint.of( 1173654000000d, 58.91 ) );
        oilPrices.add( DataPoint.of( 1173740400000d, 57.93 ) );
        oilPrices.add( DataPoint.of( 1173826800000d, 58.16 ) );
        oilPrices.add( DataPoint.of( 1173913200000d, 57.55 ) );
        oilPrices.add( DataPoint.of( 1173999600000d, 57.11 ) );
        oilPrices.add( DataPoint.of( 1174258800000d, 56.59 ) );
        oilPrices.add( DataPoint.of( 1174345200000d, 59.61 ) );
        oilPrices.add( DataPoint.of( 1174518000000d, 61.69 ) );
        oilPrices.add( DataPoint.of( 1174604400000d, 62.28 ) );
        oilPrices.add( DataPoint.of( 1174860000000d, 62.91 ) );
        oilPrices.add( DataPoint.of( 1174946400000d, 62.93 ) );
        oilPrices.add( DataPoint.of( 1175032800000d, 64.03 ) );
        oilPrices.add( DataPoint.of( 1175119200000d, 66.03 ) );
        oilPrices.add( DataPoint.of( 1175205600000d, 65.87 ) );
        oilPrices.add( DataPoint.of( 1175464800000d, 64.64 ) );
        oilPrices.add( DataPoint.of( 1175637600000d, 64.38 ) );
        oilPrices.add( DataPoint.of( 1175724000000d, 64.28 ) );
        oilPrices.add( DataPoint.of( 1175810400000d, 64.28 ) );
        oilPrices.add( DataPoint.of( 1176069600000d, 61.51 ) );
        oilPrices.add( DataPoint.of( 1176156000000d, 61.89 ) );
        oilPrices.add( DataPoint.of( 1176242400000d, 62.01 ) );
        oilPrices.add( DataPoint.of( 1176328800000d, 63.85 ) );
        oilPrices.add( DataPoint.of( 1176415200000d, 63.63 ) );
        oilPrices.add( DataPoint.of( 1176674400000d, 63.61 ) );
        oilPrices.add( DataPoint.of( 1176760800000d, 63.10 ) );
        oilPrices.add( DataPoint.of( 1176847200000d, 63.13 ) );
        oilPrices.add( DataPoint.of( 1176933600000d, 61.83 ) );
        oilPrices.add( DataPoint.of( 1177020000000d, 63.38 ) );
        oilPrices.add( DataPoint.of( 1177279200000d, 64.58 ) );
        oilPrices.add( DataPoint.of( 1177452000000d, 65.84 ) );
        oilPrices.add( DataPoint.of( 1177538400000d, 65.06 ) );
        oilPrices.add( DataPoint.of( 1177624800000d, 66.46 ) );
        oilPrices.add( DataPoint.of( 1177884000000d, 64.40 ) );
        oilPrices.add( DataPoint.of( 1178056800000d, 63.68 ) );
        oilPrices.add( DataPoint.of( 1178143200000d, 63.19 ) );
        oilPrices.add( DataPoint.of( 1178229600000d, 61.93 ) );
        oilPrices.add( DataPoint.of( 1178488800000d, 61.47 ) );
        oilPrices.add( DataPoint.of( 1178575200000d, 61.55 ) );
        oilPrices.add( DataPoint.of( 1178748000000d, 61.81 ) );
        oilPrices.add( DataPoint.of( 1178834400000d, 62.37 ) );
        oilPrices.add( DataPoint.of( 1179093600000d, 62.46 ) );
        oilPrices.add( DataPoint.of( 1179180000000d, 63.17 ) );
        oilPrices.add( DataPoint.of( 1179266400000d, 62.55 ) );
        oilPrices.add( DataPoint.of( 1179352800000d, 64.94 ) );
        oilPrices.add( DataPoint.of( 1179698400000d, 66.27 ) );
        oilPrices.add( DataPoint.of( 1179784800000d, 65.50 ) );
        oilPrices.add( DataPoint.of( 1179871200000d, 65.77 ) );
        oilPrices.add( DataPoint.of( 1179957600000d, 64.18 ) );
        oilPrices.add( DataPoint.of( 1180044000000d, 65.20 ) );
        oilPrices.add( DataPoint.of( 1180389600000d, 63.15 ) );
        oilPrices.add( DataPoint.of( 1180476000000d, 63.49 ) );
        oilPrices.add( DataPoint.of( 1180562400000d, 65.08 ) );
        oilPrices.add( DataPoint.of( 1180908000000d, 66.30 ) );
        oilPrices.add( DataPoint.of( 1180994400000d, 65.96 ) );
        oilPrices.add( DataPoint.of( 1181167200000d, 66.93 ) );
        oilPrices.add( DataPoint.of( 1181253600000d, 65.98 ) );
        oilPrices.add( DataPoint.of( 1181599200000d, 65.35 ) );
        oilPrices.add( DataPoint.of( 1181685600000d, 66.26 ) );
        oilPrices.add( DataPoint.of( 1181858400000d, 68.00 ) );
        oilPrices.add( DataPoint.of( 1182117600000d, 69.09 ) );
        oilPrices.add( DataPoint.of( 1182204000000d, 69.10 ) );
        oilPrices.add( DataPoint.of( 1182290400000d, 68.19 ) );
        oilPrices.add( DataPoint.of( 1182376800000d, 68.19 ) );
        oilPrices.add( DataPoint.of( 1182463200000d, 69.14 ) );
        oilPrices.add( DataPoint.of( 1182722400000d, 68.19 ) );
        oilPrices.add( DataPoint.of( 1182808800000d, 67.77 ) );
        oilPrices.add( DataPoint.of( 1182895200000d, 68.97 ) );
        oilPrices.add( DataPoint.of( 1182981600000d, 69.57 ) );
        oilPrices.add( DataPoint.of( 1183068000000d, 70.68 ) );
        oilPrices.add( DataPoint.of( 1183327200000d, 71.09 ) );
        oilPrices.add( DataPoint.of( 1183413600000d, 70.92 ) );
        oilPrices.add( DataPoint.of( 1183586400000d, 71.81 ) );
        oilPrices.add( DataPoint.of( 1183672800000d, 72.81 ) );
        oilPrices.add( DataPoint.of( 1183932000000d, 72.19 ) );
        oilPrices.add( DataPoint.of( 1184018400000d, 72.56 ) );
        oilPrices.add( DataPoint.of( 1184191200000d, 72.50 ) );
        oilPrices.add( DataPoint.of( 1184277600000d, 74.15 ) );
        oilPrices.add( DataPoint.of( 1184623200000d, 75.05 ) );
        oilPrices.add( DataPoint.of( 1184796000000d, 75.92 ) );
        oilPrices.add( DataPoint.of( 1184882400000d, 75.57 ) );
        oilPrices.add( DataPoint.of( 1185141600000d, 74.89 ) );
        oilPrices.add( DataPoint.of( 1185228000000d, 73.56 ) );
        oilPrices.add( DataPoint.of( 1185314400000d, 75.57 ) );
        oilPrices.add( DataPoint.of( 1185400800000d, 74.95 ) );
        oilPrices.add( DataPoint.of( 1185487200000d, 76.83 ) );
        oilPrices.add( DataPoint.of( 1185832800000d, 78.21 ) );
        oilPrices.add( DataPoint.of( 1185919200000d, 76.53 ) );
        oilPrices.add( DataPoint.of( 1186005600000d, 76.86 ) );
        oilPrices.add( DataPoint.of( 1186092000000d, 76.00 ) );
        oilPrices.add( DataPoint.of( 1186437600000d, 71.59 ) );
        oilPrices.add( DataPoint.of( 1186696800000d, 71.47 ) );
        oilPrices.add( DataPoint.of( 1186956000000d, 71.62 ) );
        oilPrices.add( DataPoint.of( 1187042400000d, 71.00 ) );
        oilPrices.add( DataPoint.of( 1187301600000d, 71.98 ) );
        oilPrices.add( DataPoint.of( 1187560800000d, 71.12 ) );
        oilPrices.add( DataPoint.of( 1187647200000d, 69.47 ) );
        oilPrices.add( DataPoint.of( 1187733600000d, 69.26 ) );
        oilPrices.add( DataPoint.of( 1187820000000d, 69.83 ) );
        oilPrices.add( DataPoint.of( 1187906400000d, 71.09 ) );
        oilPrices.add( DataPoint.of( 1188165600000d, 71.73 ) );
        oilPrices.add( DataPoint.of( 1188338400000d, 73.36 ) );
        oilPrices.add( DataPoint.of( 1188511200000d, 74.04 ) );
        oilPrices.add( DataPoint.of( 1188856800000d, 76.30 ) );
        oilPrices.add( DataPoint.of( 1189116000000d, 77.49 ) );
        oilPrices.add( DataPoint.of( 1189461600000d, 78.23 ) );
        oilPrices.add( DataPoint.of( 1189548000000d, 79.91 ) );
        oilPrices.add( DataPoint.of( 1189634400000d, 80.09 ) );
        oilPrices.add( DataPoint.of( 1189720800000d, 79.10 ) );
        oilPrices.add( DataPoint.of( 1189980000000d, 80.57 ) );
        oilPrices.add( DataPoint.of( 1190066400000d, 81.93 ) );
        oilPrices.add( DataPoint.of( 1190239200000d, 83.32 ) );
        oilPrices.add( DataPoint.of( 1190325600000d, 81.62 ) );
        oilPrices.add( DataPoint.of( 1190584800000d, 80.95 ) );
        oilPrices.add( DataPoint.of( 1190671200000d, 79.53 ) );
        oilPrices.add( DataPoint.of( 1190757600000d, 80.30 ) );
        oilPrices.add( DataPoint.of( 1190844000000d, 82.88 ) );
        oilPrices.add( DataPoint.of( 1190930400000d, 81.66 ) );
        oilPrices.add( DataPoint.of( 1191189600000d, 80.24 ) );
        oilPrices.add( DataPoint.of( 1191276000000d, 80.05 ) );
        oilPrices.add( DataPoint.of( 1191362400000d, 79.94 ) );
        oilPrices.add( DataPoint.of( 1191448800000d, 81.44 ) );
        oilPrices.add( DataPoint.of( 1191535200000d, 81.22 ) );
        oilPrices.add( DataPoint.of( 1191794400000d, 79.02 ) );
        oilPrices.add( DataPoint.of( 1191880800000d, 80.26 ) );
        oilPrices.add( DataPoint.of( 1191967200000d, 80.30 ) );
        oilPrices.add( DataPoint.of( 1192053600000d, 83.08 ) );
        oilPrices.add( DataPoint.of( 1192140000000d, 83.69 ) );
        oilPrices.add( DataPoint.of( 1192399200000d, 86.13 ) );
        oilPrices.add( DataPoint.of( 1192485600000d, 87.61 ) );
        oilPrices.add( DataPoint.of( 1192572000000d, 87.40 ) );
        oilPrices.add( DataPoint.of( 1192658400000d, 89.47 ) );
        oilPrices.add( DataPoint.of( 1192744800000d, 88.60 ) );
        oilPrices.add( DataPoint.of( 1193004000000d, 87.56 ) );
        oilPrices.add( DataPoint.of( 1193090400000d, 87.56 ) );
        oilPrices.add( DataPoint.of( 1193176800000d, 87.10 ) );
        oilPrices.add( DataPoint.of( 1193263200000d, 91.86 ) );
        oilPrices.add( DataPoint.of( 1193612400000d, 93.53 ) );
        oilPrices.add( DataPoint.of( 1193698800000d, 94.53 ) );
        oilPrices.add( DataPoint.of( 1193871600000d, 95.93 ) );
        oilPrices.add( DataPoint.of( 1194217200000d, 93.98 ) );
        oilPrices.add( DataPoint.of( 1194303600000d, 96.37 ) );
        oilPrices.add( DataPoint.of( 1194476400000d, 95.46 ) );
        oilPrices.add( DataPoint.of( 1194562800000d, 96.32 ) );
        oilPrices.add( DataPoint.of( 1195081200000d, 93.43 ) );
        oilPrices.add( DataPoint.of( 1195167600000d, 95.10 ) );
        oilPrices.add( DataPoint.of( 1195426800000d, 94.64 ) );
        oilPrices.add( DataPoint.of( 1195513200000d, 95.10 ) );
        oilPrices.add( DataPoint.of( 1196031600000d, 97.70 ) );
        oilPrices.add( DataPoint.of( 1196118000000d, 94.42 ) );
        oilPrices.add( DataPoint.of( 1196204400000d, 90.62 ) );
        oilPrices.add( DataPoint.of( 1196290800000d, 91.01 ) );
        oilPrices.add( DataPoint.of( 1196377200000d, 88.71 ) );
        oilPrices.add( DataPoint.of( 1196636400000d, 88.32 ) );
        oilPrices.add( DataPoint.of( 1196809200000d, 90.23 ) );
        oilPrices.add( DataPoint.of( 1196982000000d, 88.28 ) );
        oilPrices.add( DataPoint.of( 1197241200000d, 87.86 ) );
        oilPrices.add( DataPoint.of( 1197327600000d, 90.02 ) );
        oilPrices.add( DataPoint.of( 1197414000000d, 92.25 ) );
        oilPrices.add( DataPoint.of( 1197586800000d, 90.63 ) );
        oilPrices.add( DataPoint.of( 1197846000000d, 90.63 ) );
        oilPrices.add( DataPoint.of( 1197932400000d, 90.49 ) );
        oilPrices.add( DataPoint.of( 1198018800000d, 91.24 ) );
        oilPrices.add( DataPoint.of( 1198105200000d, 91.06 ) );
        oilPrices.add( DataPoint.of( 1198191600000d, 90.49 ) );
        oilPrices.add( DataPoint.of( 1198710000000d, 96.62 ) );
        oilPrices.add( DataPoint.of( 1198796400000d, 96.00 ) );
        oilPrices.add( DataPoint.of( 1199142000000d, 99.62 ) );
        oilPrices.add( DataPoint.of( 1199314800000d, 99.18 ) );
        oilPrices.add( DataPoint.of( 1199401200000d, 95.09 ) );
        oilPrices.add( DataPoint.of( 1199660400000d, 96.33 ) );
        oilPrices.add( DataPoint.of( 1199833200000d, 95.67 ) );
        oilPrices.add( DataPoint.of( 1200351600000d, 91.90 ) );
        oilPrices.add( DataPoint.of( 1200438000000d, 90.84 ) );
        oilPrices.add( DataPoint.of( 1200524400000d, 90.13 ) );
        oilPrices.add( DataPoint.of( 1200610800000d, 90.57 ) );
        oilPrices.add( DataPoint.of( 1200956400000d, 89.21 ) );
        oilPrices.add( DataPoint.of( 1201042800000d, 86.99 ) );
        oilPrices.add( DataPoint.of( 1201129200000d, 89.85 ) );
        oilPrices.add( DataPoint.of( 1201474800000d, 90.99 ) );
        oilPrices.add( DataPoint.of( 1201561200000d, 91.64 ) );
        oilPrices.add( DataPoint.of( 1201647600000d, 92.33 ) );
        oilPrices.add( DataPoint.of( 1201734000000d, 91.75 ) );
        oilPrices.add( DataPoint.of( 1202079600000d, 90.02 ) );
        oilPrices.add( DataPoint.of( 1202166000000d, 88.41 ) );
        oilPrices.add( DataPoint.of( 1202252400000d, 87.14 ) );
        oilPrices.add( DataPoint.of( 1202338800000d, 88.11 ) );
        oilPrices.add( DataPoint.of( 1202425200000d, 91.77 ) );
        oilPrices.add( DataPoint.of( 1202770800000d, 92.78 ) );
        oilPrices.add( DataPoint.of( 1202857200000d, 93.27 ) );
        oilPrices.add( DataPoint.of( 1202943600000d, 95.46 ) );
        oilPrices.add( DataPoint.of( 1203030000000d, 95.46 ) );
        oilPrices.add( DataPoint.of( 1203289200000d, 101.74 ) );
        oilPrices.add( DataPoint.of( 1203462000000d, 98.81 ) );
        oilPrices.add( DataPoint.of( 1203894000000d, 100.88 ) );
        oilPrices.add( DataPoint.of( 1204066800000d, 99.64 ) );
        oilPrices.add( DataPoint.of( 1204153200000d, 102.59 ) );
        oilPrices.add( DataPoint.of( 1204239600000d, 101.84 ) );
        oilPrices.add( DataPoint.of( 1204498800000d, 99.52 ) );
        oilPrices.add( DataPoint.of( 1204585200000d, 99.52 ) );
        oilPrices.add( DataPoint.of( 1204671600000d, 104.52 ) );
        oilPrices.add( DataPoint.of( 1204758000000d, 105.47 ) );
        oilPrices.add( DataPoint.of( 1204844400000d, 105.15 ) );
        oilPrices.add( DataPoint.of( 1205103600000d, 108.75 ) );
        oilPrices.add( DataPoint.of( 1205276400000d, 109.92 ) );
        oilPrices.add( DataPoint.of( 1205362800000d, 110.33 ) );
        oilPrices.add( DataPoint.of( 1205449200000d, 110.21 ) );
        oilPrices.add( DataPoint.of( 1205708400000d, 105.68 ) );
        oilPrices.add( DataPoint.of( 1205967600000d, 101.84 ) );
        oilPrices.add( DataPoint.of( 1206313200000d, 100.86 ) );
        oilPrices.add( DataPoint.of( 1206399600000d, 101.22 ) );
        oilPrices.add( DataPoint.of( 1206486000000d, 105.90 ) );
        oilPrices.add( DataPoint.of( 1206572400000d, 107.58 ) );
        oilPrices.add( DataPoint.of( 1206658800000d, 105.62 ) );
        oilPrices.add( DataPoint.of( 1206914400000d, 101.58 ) );
        oilPrices.add( DataPoint.of( 1207000800000d, 100.98 ) );
        oilPrices.add( DataPoint.of( 1207173600000d, 103.83 ) );
        oilPrices.add( DataPoint.of( 1207260000000d, 106.23 ) );
        oilPrices.add( DataPoint.of( 1207605600000d, 108.50 ) );
        oilPrices.add( DataPoint.of( 1207778400000d, 110.11 ) );
        oilPrices.add( DataPoint.of( 1207864800000d, 110.14 ) );
        oilPrices.add( DataPoint.of( 1208210400000d, 113.79 ) );
        oilPrices.add( DataPoint.of( 1208296800000d, 114.93 ) );
        oilPrices.add( DataPoint.of( 1208383200000d, 114.86 ) );
        oilPrices.add( DataPoint.of( 1208728800000d, 117.48 ) );
        oilPrices.add( DataPoint.of( 1208815200000d, 118.30 ) );
        oilPrices.add( DataPoint.of( 1208988000000d, 116.06 ) );
        oilPrices.add( DataPoint.of( 1209074400000d, 118.52 ) );
        oilPrices.add( DataPoint.of( 1209333600000d, 118.75 ) );
        oilPrices.add( DataPoint.of( 1209420000000d, 113.46 ) );
        oilPrices.add( DataPoint.of( 1209592800000d, 112.52 ) );
        oilPrices.add( DataPoint.of( 1210024800000d, 121.84 ) );
        oilPrices.add( DataPoint.of( 1210111200000d, 123.53 ) );
        oilPrices.add( DataPoint.of( 1210197600000d, 123.69 ) );
        oilPrices.add( DataPoint.of( 1210543200000d, 124.23 ) );
        oilPrices.add( DataPoint.of( 1210629600000d, 125.80 ) );
        oilPrices.add( DataPoint.of( 1210716000000d, 126.29 ) );
        oilPrices.add( DataPoint.of( 1211148000000d, 127.05 ) );
        oilPrices.add( DataPoint.of( 1211320800000d, 129.07 ) );
        oilPrices.add( DataPoint.of( 1211493600000d, 132.19 ) );
        oilPrices.add( DataPoint.of( 1211839200000d, 128.85 ) );
        oilPrices.add( DataPoint.of( 1212357600000d, 127.76 ) );
        oilPrices.add( DataPoint.of( 1212703200000d, 138.54 ) );
        oilPrices.add( DataPoint.of( 1212962400000d, 136.80 ) );
        oilPrices.add( DataPoint.of( 1213135200000d, 136.38 ) );
        oilPrices.add( DataPoint.of( 1213308000000d, 134.86 ) );
        oilPrices.add( DataPoint.of( 1213653600000d, 134.01 ) );
        oilPrices.add( DataPoint.of( 1213740000000d, 136.68 ) );
        oilPrices.add( DataPoint.of( 1213912800000d, 135.65 ) );
        oilPrices.add( DataPoint.of( 1214172000000d, 134.62 ) );
        oilPrices.add( DataPoint.of( 1214258400000d, 134.62 ) );
        oilPrices.add( DataPoint.of( 1214344800000d, 134.62 ) );
        oilPrices.add( DataPoint.of( 1214431200000d, 139.64 ) );
        oilPrices.add( DataPoint.of( 1214517600000d, 140.21 ) );
        oilPrices.add( DataPoint.of( 1214776800000d, 140.00 ) );
        oilPrices.add( DataPoint.of( 1214863200000d, 140.97 ) );
        oilPrices.add( DataPoint.of( 1214949600000d, 143.57 ) );
        oilPrices.add( DataPoint.of( 1215036000000d, 145.29 ) );
        oilPrices.add( DataPoint.of( 1215381600000d, 141.37 ) );
        oilPrices.add( DataPoint.of( 1215468000000d, 136.04 ) );
        oilPrices.add( DataPoint.of( 1215727200000d, 146.40 ) );
        oilPrices.add( DataPoint.of( 1215986400000d, 145.18 ) );
        oilPrices.add( DataPoint.of( 1216072800000d, 138.74 ) );
        oilPrices.add( DataPoint.of( 1216159200000d, 134.60 ) );
        oilPrices.add( DataPoint.of( 1216245600000d, 129.29 ) );
        oilPrices.add( DataPoint.of( 1216332000000d, 130.65 ) );
        oilPrices.add( DataPoint.of( 1216677600000d, 127.95 ) );
        oilPrices.add( DataPoint.of( 1216850400000d, 127.95 ) );
        oilPrices.add( DataPoint.of( 1217282400000d, 122.19 ) );
        oilPrices.add( DataPoint.of( 1217455200000d, 124.08 ) );
        oilPrices.add( DataPoint.of( 1217541600000d, 125.10 ) );
        oilPrices.add( DataPoint.of( 1217800800000d, 121.41 ) );
        oilPrices.add( DataPoint.of( 1217887200000d, 119.17 ) );
        oilPrices.add( DataPoint.of( 1217973600000d, 118.58 ) );
        oilPrices.add( DataPoint.of( 1218060000000d, 120.02 ) );
        oilPrices.add( DataPoint.of( 1218405600000d, 114.45 ) );
        oilPrices.add( DataPoint.of( 1218492000000d, 113.01 ) );
        oilPrices.add( DataPoint.of( 1218578400000d, 116.00 ) );
        oilPrices.add( DataPoint.of( 1218751200000d, 113.77 ) );
        oilPrices.add( DataPoint.of( 1219010400000d, 112.87 ) );
        oilPrices.add( DataPoint.of( 1219096800000d, 114.53 ) );
        oilPrices.add( DataPoint.of( 1219269600000d, 114.98 ) );
        oilPrices.add( DataPoint.of( 1219356000000d, 114.98 ) );
        oilPrices.add( DataPoint.of( 1219701600000d, 116.27 ) );
        oilPrices.add( DataPoint.of( 1219788000000d, 118.15 ) );
        oilPrices.add( DataPoint.of( 1219874400000d, 115.59 ) );
        oilPrices.add( DataPoint.of( 1219960800000d, 115.46 ) );
        oilPrices.add( DataPoint.of( 1220306400000d, 109.71 ) );
        oilPrices.add( DataPoint.of( 1220392800000d, 109.35 ) );
        oilPrices.add( DataPoint.of( 1220565600000d, 106.23 ) );
        oilPrices.add( DataPoint.of( 1220824800000d, 106.34 ) );
    }

}
